#ifndef _HASH_H_
#define _HASH_H_

#ifdef __cplusplus
 extern "C" {
#endif 
     
     
#pragma pack(push, 1)
typedef union stHASH12 {
    unsigned char bytes[12];
    struct {
        unsigned int a1;
        unsigned int a2;
        unsigned int a3;
    } hash;
} HASH12;
#pragma pack(pop)

void makeHash(char* src, char* des, unsigned int len);

uint32_t RSHash(char* str, unsigned int len);
uint32_t JSHash(char* str, unsigned int len);
uint32_t PJWHash(char* str, unsigned int len);
uint32_t ELFHash(char* str, unsigned int len);
uint32_t BKDRHash(char* str, unsigned int len);
uint32_t SDBMHash(char* str, unsigned int len);
uint32_t DJBHash(char* str, unsigned int len);
uint32_t DEKHash(char* str, unsigned int len);
uint32_t BPHash(char* str, unsigned int len);
uint32_t FNVHash(char* str, unsigned int len);
uint32_t APHash(char* str, unsigned int len);
     
     
#ifdef __cplusplus
}
#endif

#endif // _HASH_H_
